package com.hifar.test.entrust.service.impl;

import com.hifar.test.entrust.service.IHfEnvEntrustService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

/**
 * 委托单异步操作服务
 * 用于处理耗时的文件生成操作，避免阻塞主业务流程
 */
@Service
public class HfEnvEntrustAsyncService {

    private static final Logger log = LoggerFactory.getLogger(HfEnvEntrustAsyncService.class);

    @Autowired
    private IHfEnvEntrustService envEntrustService;

    /**
     * 异步生成委托单二维码文件
     * @param entrustId 委托单ID
     * @param entrustCode 委托单号（用于日志记录）
     */
    @Async
    public void asyncGenerateQrCodeFile(String entrustId, String entrustCode) {
        log.info("开始异步生成二维码文件，委托单号：{}", entrustCode);
        try {
            envEntrustService.generateQrCodeFile2(entrustId);
            log.info("异步生成二维码文件成功，委托单号：{}", entrustCode);
        } catch (Exception e) {
            log.error("异步生成二维码文件失败，委托单号：{}，错误信息：{}", entrustCode, e.getMessage(), e);
        }
    }

    /**
     * 异步生成委托单数据包文件
     * @param entrustId 委托单ID
     * @param entrustCode 委托单号（用于日志记录）
     */
    @Async
    public void asyncGeneratePackageData(String entrustId, String entrustCode) {
        log.info("开始异步生成数据包文件，委托单号：{}", entrustCode);
        try {
            envEntrustService.generatePackageData(entrustId);
            log.info("异步生成数据包文件成功，委托单号：{}", entrustCode);
        } catch (Exception e) {
            log.error("异步生成数据包文件失败，委托单号：{}，错误信息：{}", entrustCode, e.getMessage(), e);
        }
    }
}

